#ifndef SYMBOL_TABLE_H_
#define SYMBOL_TABLE_H_

#ifndef CLASSES
#define CLASSES
typedef enum  {
	CONSTANTE,
	TIPO,
	VARIAVEL,
	PROCEDIMENTO,
	FUNCAO,
	CAMPO_REGISTRO,
	PALAVRA_RESERVADA
} t_classes;

#endif

#ifndef TIPOS
#define TIPOS
typedef enum {
	INTEIRO,
	REAL,
	CARACTER,
	TEXTO,
	REGISTRO,
	MATRIZ,
	BOOLEANO,
	ARQUIVO
} t_tipos;

#endif

typedef struct POSITION {
	int line;
	int column;
} t_position;



typedef struct SYMBOLTABLE {
	char name[64];
	int level;
	t_classes class;
	t_tipos type;
	t_position pos;
	union {
		int inteiro;
		float real;
		char caracter;
		char *texto;
		int *outros;
	} value;
	struct SYMBOLTABLE *next;
	struct SYMBOLTABLE *prev;
	
} symbolTable;

#endif
